<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //       Set() 
        // 1.创建Set数据结构
        // 注意: Set内有size属性 类似数组里的length
        // const s = new Set()
        // console.log(s.size);//0
        // const s1 = new Set(['a', 'b'])
        // console.log(s1.size);//2


        // // 2.Set成员的值都是唯一性 不会会有重复 可以利用这一点配合扩展运算符做数组去重
        // const s2 = new Set(['a', 'a', 'b', 'b'])
        // console.log(s2.size);//2
        // // 将Set数据结构转换为以逗号分隔的零散量 然后再零散量外面加上中括号 就成了数组 
        // let arr = [...s2]
        // console.log(arr);


        // 3. Set()对象实例的方法 
        // (1).add(value) :添加某个值 返回Set结构本身 
        // const s1 = new Set()
        // s1.add('a', 'b')//{'a'} 不能连写
        // s1.add('a').add('b')//{'a','b'} 
        // // console.log(s1);
        // // (2)delete(value) :删除某个值 返回一个布尔值 表示删除成功
        // let re = s1.delete('a')
        // console.log(re);//true
        // console.log(s1);//{b}
        // // (3)has(value):返回一个布尔值 表示该值是否为Set的成员
        // let re1 = s1.has('b')
        // console.log(re1);//true
        // let re2 = s1.has('s')
        // console.log(re2);//false
        // // (4)clear():清除所有成员 没有返回值
        // let re3 = s1.clear()
        // console.log(s1.size);//0
        // console.log(re3);//没有返回值 全部清除 undefined了


        // 4.遍历Set Set结构的实例与数组一样 也有forEach 方法 用于对每个成员执行某种操作 没有返回值 s.forEach( value => console.log(value))
        const s5 = new Set(['a', 'b', 'c', 'd'])
        // forEach的参数还好以前数组的参数一样
        s5.forEach(value => console.log(value))//a b c d 每个元素会独占一行打印出来


    </script>
</body>

</html>